/*
 * Role.java
 * Copyright(C) 2020-2099 坚小持
 * All rights reserved.
 * -----------------------------------------------
 * 2020-08-13 Created
 */
package com.project.web.system.model.app;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**
 * 角色表
 *
 * @version 1.0 2020-08-13
 */
@ApiModel("角色表")
@Data
public class Role {

    /**
     *
     */
    @ApiModelProperty()
    private Long id;

    /**
     * 角色名称
     */
    @ApiModelProperty("角色名称")
    private String roleName;

    /**
     * 角色编码
     */
    @ApiModelProperty("角色编码")
    private String roleCode;

    /**
     * 角色状态0：新建 1：启用 2：禁用
     */
    @ApiModelProperty("角色状态0：新建 1：启用 2：禁用")
    private Integer status;

    /**
     * 是否系统角色
     */
    @ApiModelProperty("是否系统角色")
    private Short isSys;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createDate;

    /**
     * 修改时间
     */
    @ApiModelProperty("修改时间")
    private Date modifyDate;

    /****************扩展字段*****************/
    /**
     * 用户ID
     */
    private Long userId;


    /**
     * 菜单类型 1 菜单 2 按钮
     */
    public enum STATUS {
        NEW("新建", 1),
        START("启用", 2),
        DISABLED("禁用",3);

        /**
         * 枚举名称
         */
        private String name;

        /**
         * 枚举值
         */
        private Integer value;

        /**
         * 枚举有参构造函数
         *
         * @param value 枚举值
         * @param name  枚举名
         */
        STATUS(String name, Integer value) {
            this.value = value;
            this.name = name;
        }


        public String getName() {
            return name;
        }

        /**
         * 设置枚举名称
         */
        public void setName(String name) {
            this.name = name;
        }

        /**
         * 获取类型值
         */
        public Integer getValue() {
            return value;
        }

        /**
         * 设置类型值
         */
        public void setValue(Integer value) {
            this.value = value;
        }
    }

    /**
     * 菜单类型 1 菜单 2 按钮
     */
    public enum ROLE_CODE {
        MK_MANAGER("市场主管", "007");

        /**
         * 枚举名称
         */
        private String name;

        /**
         * 枚举值
         */
        private String value;

        /**
         * 枚举有参构造函数
         *
         * @param value 枚举值
         * @param name  枚举名
         */
        ROLE_CODE(String name, String value) {
            this.value = value;
            this.name = name;
        }


        public String getName() {
            return name;
        }

        /**
         * 设置枚举名称
         */
        public void setName(String name) {
            this.name = name;
        }

        /**
         * 获取类型值
         */
        public String getValue() {
            return value;
        }

        /**
         * 设置类型值
         */
        public void setValue(String value) {
            this.value = value;
        }
    }
}